package com.fowo.api.model.fba.shipment.product;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * fba货件子表 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class FbaShipmentProductImportPo {

  /** 所属fba货件 */
  @ExcelProperty("所属fba货件")
  @Size(max = 500, message = "所属fba货件长度不能超过500")
  private String parentFbaShipmentShipmentName;

  @ExcelIgnore
  @Schema(title = "所属fba货件")
  private String parentFbaShipment;

  /** MSKU */
  @ExcelProperty("MSKU")
  @Size(max = 50, message = "MSKU长度不能超过50")
  private String msku;

  /** FNSKU */
  @ExcelProperty("FNSKU")
  @Size(max = 50, message = "FNSKU长度不能超过50")
  private String fnsku;

  /** 标题 */
  @ExcelProperty("标题")
  @Size(max = 50, message = "标题长度不能超过50")
  private String label;

  /** ASIN */
  @ExcelProperty("ASIN")
  @Size(max = 50, message = "ASIN长度不能超过50")
  private String asin;

  /** 父Asin */
  @ExcelProperty("父Asin")
  @Size(max = 50, message = "父Asin长度不能超过50")
  private String parentAsin;

  /** 品名 */
  @ExcelProperty("品名")
  @Size(max = 500, message = "品名长度不能超过500")
  private String productNameName;

  @ExcelIgnore
  @Schema(title = "品名")
  private String productName;

  /** SKU */
  @ExcelProperty("SKU")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** 申报量 */
  @ExcelProperty("申报量")
  @IntegerString(message = "申报量数值格式不正确", label = "申报量")
  private String amountDeclared;

  /** 已发货 */
  @ExcelProperty("已发货")
  @IntegerString(message = "已发货数值格式不正确", label = "已发货", min = 0)
  private String quantityShippedLocal;

  /** 签收量 */
  @ExcelProperty("签收量")
  @IntegerString(message = "签收量数值格式不正确", label = "签收量", min = 0)
  private String quantityReceived;

  /** 申发差异 */
  @ExcelProperty("申发差异")
  @IntegerString(
    message = "申发差异数值格式不正确",
    label = "申发差异",
    min = 0
  )
  private String shenFaDifference;

  /** 收发差异 */
  @ExcelProperty("收发差异")
  @IntegerString(
    message = "收发差异数值格式不正确",
    label = "收发差异",
    min = 0
  )
  private String shouFaDifference;

  /** 申收差异 */
  @ExcelProperty("申收差异")
  @IntegerString(
    message = "申收差异数值格式不正确",
    label = "申收差异",
    min = 0
  )
  private String shenShouDifference;

  /** 发货计划 */
  @ExcelProperty("发货计划")
  @Size(max = 50, message = "发货计划长度不能超过50")
  private String shipmentPlanSn;

  /** 计划发货量 */
  @ExcelProperty("计划发货量")
  @IntegerString(
    message = "计划发货量数值格式不正确",
    label = "计划发货量",
    min = 0
  )
  private String planShioment;

  /** 单箱数量 */
  @ExcelProperty("单箱数量")
  @IntegerString(
    message = "单箱数量数值格式不正确",
    label = "单箱数量",
    min = 0
  )
  private String quantityPerCarton;

  /** 箱数 */
  @ExcelProperty("箱数")
  @IntegerString(message = "箱数数值格式不正确", label = "箱数", min = 0)
  private String cartonNumbers;

  /** 数据来源 0：erp创建，1：亚马逊同步 */
  @ExcelProperty("数据来源 0：erp创建，1：亚马逊同步")
  @EnumsString(
    value = { "erp创建", "亚马逊同步" },
    message = "数据来源 0：erp创建，1：亚马逊同步只能是“erp创建”, “亚马逊同步”中的一个"
  )
  private String isSynchronous;

  /** 剩余发货量 */
  @ExcelProperty("剩余发货量")
  @IntegerString(
    message = "剩余发货量数值格式不正确",
    label = "剩余发货量",
    min = 0
  )
  private String residueSendGoods;

  /** fnskuname */
  @ExcelProperty("fnskuname")
  @Size(max = 50, message = "fnskuname长度不能超过50")
  private String fnskuname;

  /** title */
  @ExcelProperty("title")
  @Size(max = 50, message = "title长度不能超过50")
  private String title;

  /** 店铺id */
  @ExcelProperty("店铺id")
  @LongString(message = "店铺id数值格式不正确", label = "店铺id", min = 0L)
  private String shopid;

  /** fnsku */
  @ExcelProperty("fnsku")
  @LongString(message = "fnsku数值格式不正确", label = "fnsku", min = 0L)
  private String fnskuId;
}
